TruRisk™ Eliminate Release 4.2 API

September 22, 2026

This release adds APIs for patch blocking rules and for the deployment job approval workflow, so you can block unwanted patches before deployment and require approval before a job runs.

Before understanding the API release highlights, learn more about the API server URL to be used in your API requests by referring to the Know Your Qualys API Server URL section. For this API Release Notes, <qualys_base_url> is mentioned in the sample API requests.

New Feature

Block Unwanted Patches Before Deployment

What's New for You

You can now create and manage patch-blocking rules through the API, so that unwanted patches are skipped before deployment on your Windows and Linux assets.

New API: Get All Patch Blocking Rules

New or Updated API New
API Endpoint /pm/v1/blocking/rules
Method GET
DTD or XSD changes Not Applicable

With this release, users can retrieve a list of blocking rules. The feature supports both Windows and Linux platforms. If the platform parameter is not provided, all Windows blocking rules will be fetched by default.

Sample - Get All Patch Blocking RulesSample - Get All Patch Blocking Rules

API Request

curl -X 'GET' \
  '<qualys_base_url>/pm/v1/blocking/rules' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <JWT_Token>'

API Response

[
  {
    "ruleId": "fa948db3-6b44-43d7-828c-2f056a966954",
    "ruleName": "Windows_blocked_Enable_Acquired_From_Vendor_Patches ",
    "ruleReason": "blocked Enable Acquired From Vendor Patches ",
    "criteria": {
      "type": 1,
      "value": "patch.isEnabledVendorAcquiredPatches:true"
    },
    "platform": "Windows",
    "customerId": "5e35d0c5-ea3d-55c7-8320-7d89b67eb709",
    "includeTagIds": [
      "3b5a83f2-8dc2-467c-999a-3c029fb0b31e"
    ],
    "createdBy": {
      "id": "aa093746-5cbd-7b3b-8136-5794736f5a2f",
      "name": "John Doe ",
      "user": "johnd"
    },
    "createdAt": "2026-09-09T07:08:50.013",
    "updatedBy": {
      "id": "aa093746-5cbd-7b3b-8136-5794736f5a2f",
      "name": "John Doe",
      "user": "<username>"
    },
    "updatedAt": "2026-09-09T09:05:10.289",
    "deleted": false,
    "scope": "TAG_BASED"
  }
]

New API: Create Patch Blocking Rule

New or Updated API New
API Endpoint /pm/v1/blocking/rules
Method POST
DTD or XSD changes Not Applicable

With this release, a new Create Patch Blocking Rule API to create a patch blocking rule based on specified criteria. Once created, rule identifies applicable patches and blocks them from deployment across the Windows and Linux platforms. A maximum of 10 blocking rules is allowed per platform.

Input ParametersInput Parameters

Parameter Sub Parameter Mandatory/
Optional
Data Type Description
ruleName   Mandatory String Specify the name for the rule. 
Note: The rule name helps you identify the specific rule because of which the patches get skipped. 
ruleReason   Mandatory String Specify a reason for which the blocking rule is created.
criteria type Mandatory Integer Specify the type as 1. 
Note: Only the patch QQL type 1 is supported. 
value Mandatory String Specify the QQL token query. 
Platform   Mandatory String Specify the platform.
Supported values are Windows and Linux.
Scope   Mandatory String Specify the scope. Supported values are GLOBAL and TAG_BASED. 
Note:  The global scope is applicable for all assets. The tag-based scope applies only to assets included in the tag. 
includeTagIds   Optional String Specify the tag ID for the tag to be included in the rule.
Note: This parameter is mandatory if you select the TAG_BASED scope.

Sample - Create a Patch Blocking RuleSample - Create a Patch Blocking Rule

API Request

curl -X 'POST' \
  '<qualys_base_url>/pm/v1/blocking/rules' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <JWT_Token>
  -H 'Content-Type: application/json' \
  -d 

API Body

'{  
"ruleName": "Windows Blocking Rule",
  "ruleReason": "Blocking few patches",
  "criteria": {
    "type": 1,
    "value": "patch.publishedDate:[2026-05-01 ... now-5d] and patch.appFamily:`Visual C++`"
  },
  "platform": "Windows",
  "includeTagIds": [],
  "scope": "GLOBAL"
}'

API Response

{
  "ruleId": "c003a69f-17d1-4a85-9ef7-2ef9f87aff2d",
  "ruleName": "Windows Blocking Rule",
  "ruleReason": "Blocking few patches",
  "criteria": {
    "type": 1,
    "value": "patch.publishedDate:[2026-05-01 ... now-5d] and patch.appFamily:`Visual C++`"
  },
  "platform": "Windows",
  "customerId": "5e35d0c5-ea3d-55c7-8320-7d89b67eb709",
  "includeTagIds": [],
  "createdBy": {
    "id": "aa093746-5cbd-7b3b-8136-5794736f5a2f",
    "name": "John Doe",
    "user": "<username>"
  },
  "createdAt": "2026-09-10T03:54:44.883",
  "updatedBy": null,
  "updatedAt": null,
  "deleted": false,
  "scope": "GLOBAL"
}

New API: Get Patch Blocking Rule by ID

New or Updated API New
API Endpoint /pm/v1/blocking/rules/{id}
Method GET
DTD or XSD changes Not Applicable

With this release, a new Get Patch Blocking Rule by ID API is introduced, which helps to fetch a specific patch-blocking rule by its rule ID and view detailed information about it. This feature is supported on both Windows and Linux platforms.

Sample - Get a Patch Blocking Rule by IDSample - Get a Patch Blocking Rule by ID

API Request

curl -X 'GET' \
  '<qualys_base_url>/pm/v1/blocking/rules/c003a69f-17d1-4a85-9ef7-2ef9f87aff2d?platform=Windows' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <JWT_Token>'

API Response

{
  "ruleId": "c003a69f-17d1-4a85-9ef7-2ef9f87aff2d",
  "ruleName": "Windows Blocking Rule",
  "ruleReason": "Blocking few patches",
  "criteria": {
    "type": 1,
    "value": "patch.publishedDate:[2026-05-01 ... now-5d] and patch.appFamily:`Visual C++`"
  },
  "platform": "Windows",
  "customerId": "5e35d0c5-ea3d-55c7-8320-7d89b67eb709",
  "includeTagIds": [],
  "createdBy": {
    "id": "aa093746-5cbd-7b3b-8136-5794736f5a2f",
    "name": "John Doe",
    "user": "<username>"
  },
  "createdAt": "2026-09-10T03:54:44.883",
  "updatedBy": null,
  "updatedAt": null,
  "deleted": false,
  "scope": "GLOBAL"
}

New API: Update Patch Blocking Rule by ID

New or Updated API New
API Endpoint /pm/v1/blocking/rules/{id}
Method PUT
DTD or XSD changes Not Applicable

With this release, a new Updated Patch Blocking Rule by ID is introduced that helps to update a patch blocking rule using its rule ID. This feature is supported on both Windows and Linux platforms.

Input ParametersInput Parameters

Parameter Sub Parameter Mandatory/
Optional
Data Type Description
ruleName   Mandatory String Specify the name for the rule. 
Note: The rule name helps you identify the specific rule because of which the patches get skipped. 
ruleReason   Mandatory String Specify a reason for which the blocking rule is created.
criteria type Mandatory Integer Specify the type as 1. 
Note: Only the patch QQL type 1 is supported. 
value Mandatory String Specify the QQL token query. 
Platform   Mandatory String Specify the platform.
Supported values are Windows and Linux.
Scope   Mandatory String Specify the scope. Supported values are GLOBAL and TAG_BASED. 
Note:  The global scope is applicable for all assets. The tag-based scope applies only to assets included in the tag. 
includeTagIds   Optional String Specify the tag ID for the tag to be included in the rule.
Note: This parameter is mandatory if you select the TAG_BASED scope.

Sample - Update a Patch Blocking Rule by IDSample - Update a Patch Blocking Rule by ID

API Request

curl -X 'PUT' \
  '<qualys_base_url>/pm/v1/blocking/rules/c003a69f-17d1-4a85-9ef7-2ef9f87aff2d' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <JWT_Token>
  -H 'Content-Type: application/json' \
  -d '{

API Body

  "ruleName": "Windows Blocking Rule",
  "ruleReason": "Blocking few patches",
  "criteria": {
    "type": 1,
    "value": "patch.publishedDate:[2026-05-01 ... now-5d] and patch.appFamily:`Visual C++`"
  },
  "platform": "Windows",
  "includeTagIds": ["6ff0b36a-644a-4413-9d87-c2e35381db07"],
  "scope": "TAG_BASED"
}'

API Response

Not documented for this release; the response follows the same schema shown in the corresponding Get/Create sample above.

New API: Delete Patch Blocking Rule by ID

New or Updated API New
API Endpoint /pm/v1/blocking/rules/{id}
Method DELETE
DTD or XSD changes Not Applicable

With this release, a new Delete Patch Blocking Rule by ID is introduced that helps to delete a patch blocking rule using its rule ID. This feature is supported on both Windows and Linux platforms.

Sample - Delete a Patch Blocking Rule by IDSample - Delete a Patch Blocking Rule by ID

API Request

curl -X 'DELETE' \
  '<qualys_base_url>/pm/v1/blocking/rules/c003a69f-17d1-4a85-9ef7-2ef9f87aff2d?platform=Windows' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <JWT_Token>'

API Response

{
  "deleted": true
}

New Feature

Approve Deployment Jobs Before They Run

What's New for You

You can now drive the deployment job approval workflow through the API; send a job for approval, approve, reject or revoke it, and review its approval history and status.

New API: Get Approval Status for a Deployment Job

New or Updated API New
API Endpoint /pm/v1/deploymentjobs/<job-id>/approval
Method Get
DTD or XSD changes Not Applicable

With this new API, you can check the history of actions and the status of the job approval, along with the comments provided by the job approver.

Sample - Get the Approval Status of a Deployment JobSample - Get the Approval Status of a Deployment Job

API Request

curl -X 'GET' \
  '<qualys_base_url>/pm/v1/deploymentjobs/<job-id> /approval' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <JWT_Token>

API Response

[
  {
    "approvalStatus": "APPROVED",
    "decisions": [
      {
        "userId": "47109f50-52b2-4cf5-8139-ad57491e7740",
        "action": "REJECTED",
        "comment": "Update job",
        "createdDateTime": "2026-09-09T10:24:29.427+00:00",
        "userName": "<username1>"
      },
      {
        "userId": "30ce0a0f-05b4-db48-8296-b7dd8a6d2943",
        "action": "PENDING_APPROVAL",
        "comment": "Sending job for approval.",
        "createdDateTime": "2026-09-09T10:23:27.669+00:00",
        "userName": "<username2>"
      },
      {
        "userId": "30ce0a0f-05b4-db48-8296-b7dd8a6d2943",
        "action": "revoked",
        "comment": "Approval automatically revoked because deployment job configuration was modified.",
        "createdDateTime": "2026-09-09T10:12:59.369+00:00",
        "userName": "<username3>"
      },
      {
        "userId": "47109f50-52b2-4cf5-8139-ad57491e7740",
        "action": "REJECTED",
        "comment": "change schedule time",
        "createdDateTime": "2026-09-09T10:11:50.141+00:00",
        "userName": "<username4>"
      },
      {
        "userId": "30ce0a0f-05b4-db48-8296-b7dd8a6d2943",
        "action": "PENDING_APPROVAL",
        "comment": "Sending job for approval.",
        "createdDateTime": "2026-09-09T10:11:11.037+00:00",
        "userName": "<username5>"
      },
      .........
      .........
      {
        "userId": "30ce0a0f-05b4-db48-8296-b7dd8a6d2943",
        "action": "revoked",
        "comment": "Approval automatically revoked because deployment job configuration was modified.",
        "createdDateTime": "2026-09-09T10:08:30.052+00:00",
        "userName": "<username6>"
      },
      {
        "userId": "47109f50-52b2-4cf5-8139-ad57491e7740",
        "action": "REJECTED",
        "comment": "Change scope",
        "createdDateTime": "2026-09-09T10:07:14.947+00:00",
        "userName": "<username7>"
      },
      {
        "userId": "30ce0a0f-05b4-db48-8296-b7dd8a6d2943",
        "action": "PENDING_APPROVAL",
        "comment": "Sending job for approval.",
        "createdDateTime": "2026-09-09T10:06:47.641+00:00",
        "userName": "<username8>"
      }
    ]
  }
]

New API: Perform an Approval Action on a Deployment Job

New or Updated API New
API Endpoint /pm/v1/deploymentjobs/<jobid>/approval
Method POST
DTD or XSD changes Not Applicable

With this API, the job approver can approve or reject a pending job. The job owner can send a job for approval or revoke a pending approval request. APPROVED and REJECTED actions are performed by the job approver; PENDING_APPROVAL and REVOKED are performed by the job owner.

Input ParametersInput Parameters

Parameter Mandatory/
Optional
Data Type Description
action Mandatory String These are the approval actions on the Job approver’s end and also statuses on the job owner's end. 
The supported values are APPROVED and REJECTED for the job approver and pending_APPPROVAL and REVOKED for the job owner.
comment Optional String Specify a comment for the job owner to mention any specific comment of the reason why the job was rejected.

Sample - Approve a Deployment JobSample - Approve a Deployment Job

API Request

curl -X 'POST' \
  '<qualys_base_url>/pm/v1/deploymentjobs/<Job-id>/approval' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <JWT_Token>
  -H 'Content-Type: application/json' \

API Body

{
  "action": "APPROVED",
  "comment": "The job is approved."
}

API Response

{
  "approvalStatus": "APPROVED",
  "id": "4e392bd0-7f4a-444d-af2d-8bf987817308"
}

Updated API: Create Deployment Job – Approval Flow Validation

New or Updated API Updated
API Endpoint /pm/v2/deploymentjob
Method POST
DTD or XSD changes Not Applicable

When the job approval workflow is enabled for a platform, this API is updated to reject a create job request unless the job is submitted with the status set to Disabled. An error message is displayed in the API response.

This response is generated with the existing API samples with the job Approval Workflow enabled.

Sample - Create Deployment Job Request Rejected When Approval Flow Is OnSample - Create Deployment Job Request Rejected When Approval Flow Is On

API Request

curl -X 'POST' \
  '<qualys_base_url>/pm/v2/deploymentjob' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <JWT_Token>
  -H 'Content-Type: application/json' \

API Body

{
  "approvedPatches": [
    "15b4c30c-6b8e-380e-8c74-a0af9ef99ced"
  ],
  "dynamicPatchesQQL": "",
  "additionalDynamicPatchesQQL": "",
  "additionalDynamicQQLType": "",
  "isDynamicPatchesQQL": false,
  "dynamicQQLType": 1,
  "linkedJobId": "",
  "assetCount": 1,
  "assetIds": [
    "734c35b7-5b26-4dc7-b56c-08c5a902c345"
  ],
  "isAssetImported": false,
  "assetFilePath": null,
  "assetTagIds": [],
  "assetDetectionsQQL": "",
  "deleted": false,
  "duringDeployment": {
    "userMessage": "",
    "description": ""
  },
  "name": "test-en-01-new",
  "description": "",
  "createdBy": null,
  "patchCount": 1,
  "postDeployment": {
    "suppressreboots": false,
    "rebootHonorOnUserLogin": false,
    "onComplete": {
      "userMessage": "",
      "description": "",
      "alwaysShowCompletedPrompt": false
    },
    "rebootCountdown": {
      "interval": 15,
      "intervalUnit": "MINUTES",
      "userMessage": "Reboot countdown started",
      "description": "The system reboot is initiated. It will reboot automatically after the timer countdown."
    },
    "rebootOption": {
      "deferment": {
        "count": null,
        "interval": null,
        "intervalUnit": "HOURS"
      },
      "userMessage": "",
      "description": ""
    }
  },
  "preDeployment": {
    "deferment": {
      "count": null,
      "interval": null,
      "intervalUnit": "HOURS"
    },
    "userMessage": "",
    "description": ""
  },
  "recurring": false,
  "dayOfMonth": null,
  "recurringLastDayOfMonth": false,
  "recurringDayOfMonth": null,
  "patchTuesdayPlusXDays": null,
  "monthlyRecurringType": null,
  "recurringWeekDayOfMonth": null,
  "recurringWeekDays": "",
  "scheduleType": "On-demand",
  "schemaVersion": "1.0",
  "startDateTime": null,
  "status": "Enabled",
  "opportunisticdownloads": false,
  "minimizeWindow": false,
  "enableReattemptFailedPatches": false,
  "reattemptFailedPatches": {
    "noOfReattempts": 0,
    "exponentialBackoffInterval": 0,
    "exponentialBackoffIntervalUnit": "SECONDS"
  },
  "timeout": -1,
  "timeoutUnit": "HOURS",
  "runOnNextMaintenanceWindow": true,
  "bypassMaintenanceWindow": false,
  "timezone": null,
  "timezoneType": null,
  "type": "Install",
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "exclusionTagIds": [],
  "matchAllTagIds": [],
  "coAuthorUserIds": [],
  "platform": "Windows",
  "exclusionAssetIds": [],
  "preDeployActions": [],
  "postDeployActions": [],
  "notification": null,
  "remediationQids": [],
  "isVulnContext": false,
  "subCategory": "Patch",
  "chainedJobRule": [],
  "hostIsolationConfig": null,
  "quarantineAssetRequestNotification": null,
  "isDefaultJob": false,
  "defaultJobConfiguration": {
    "onAssetActivation": false,
    "onAssetInactiveForXDays": null
  },
  "allowExecutionWithPendingReboot": false,
  "customPatchURLId": null,
  "downloadRandomizeTime": 0,
  "downloadRandomizeTimeUnit": "MINUTES",
  "jobCategory": null,
  "jobSource": 2
}

API Response

Error Message =>

{
  "_error": {
    "code": 400,
    "errorCode": "3157",
    "message": "Cannot create job when approval flow is ON unless status is Disabled."
  }
}

Updated API: Change Status of Deployment Job

New or Updated API Updated
API Endpoint /pm/v1/deploymentjobs/update/status/{action}
Method POST
DTD or XSD changes Not Applicable

This updated API now honors the job approval workflow. A job whose approval flow is turned on cannot be bulk-enabled until it has been approved; the response provides a per-job failure reason for any job that is still pending, rejected, or revoked.

This response is generated using the existing API samples, with the job Approval Workflow enabled.

Sample - Bulk-Enable Deployment JobsSample - Bulk-Enable Deployment Jobs

API Request

curl -X 'POST' \
  '<qualys_base_url>/pm/v1/deploymentjobs/update/status/Enabled' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <JWT_Token>
  -H 'Content-Type: application/json' \

API Body

{
  "ids": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    "4rfcef64-2617-4562-eg3c-6h863f66afw3"
  ]
}

API Response

[
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "name": "patch-job-1",
    "status": "failure",
    "error": "approval flow in enabled can not enable in bulk."
  }
  {
    "id": "4rfcef64-2617-4562-eg3c-6h863f66afw3",
    "name": "patch-job-2", 
    "status": "failure",
    "error": "approval flow in enabled can not enable in bulk." 
   }
]

Updated API: Create Deployment Job (Windows)

New or Updated API Updated
API Endpoint /pm/v2/deploymentjob
Method POST
DTD or XSD changes Not Applicable

With this updated API, a new field approvalStatus is introduced in the API request that indicates the job approval status across the job execution flow. When this field is set to Pending_Approval status, the job is shown at the approver's end and will get executed after it is approved.

Input ParametersInput Parameters

Parameter Mandatory/
Optional
Data Type Description
approvalStatus Optional String Specify the job approval status. 
This parameter indicates the approval status in the Job Approval Flow. When the job is created in disabled state with the approval status as “Pending Approval. The job is executed after approval.  

Sample - Create a Windows Installation Deployment Job with Approval StatusSample - Create a Windows Installation Deployment Job with Approval Status

API Request

curl --location '<qualys_base_url>/pm/v2/deploymentjob' \
--header 'accept: application/json' \
--header 'Authorization: Bearer <JWT_Token>
--header 'Content-Type: application/json' \
--data 

API Body

{
  "approvalStatus": "PENDING_APPROVAL",
  "approvedPatches": [
    "36cd9d93-ffc8-333e-a467-b93aec9a1137"
  ],
  "dynamicPatchesQQL": "",
  "additionalDynamicPatchesQQL": "",
  "additionalDynamicQQLType": "",
  "isDynamicPatchesQQL": false,
  "dynamicQQLType": 1,
  "linkedJobId": "",
  "assetCount": 1,
  "assetIds": [
    "734c35b7-5b26-4dc7-b56c-08c5a902c345"
  ],
  "isAssetImported": false,
  "assetFilePath": null,
  "assetTagIds": [],
  "assetDetectionsQQL": "",
  "deleted": false,
  "duringDeployment": {
    "userMessage": "",
    "description": ""
  },
  "name": "test-windows-ax",
  "description": "",
  "createdBy": null,
  "patchCount": 1,
  "postDeployment": {
    "suppressreboots": false,
    "rebootHonorOnUserLogin": false,
    "onComplete": {
      "userMessage": "",
      "description": "",
      "alwaysShowCompletedPrompt": false
    },
    "rebootCountdown": {
      "interval": 15,
      "intervalUnit": "MINUTES",
      "userMessage": "Reboot countdown started",
      "description": "The system reboot is initiated. It will reboot automatically after the timer countdown."
    },
    "rebootOption": {
      "deferment": {
        "count": null,
        "interval": null,
        "intervalUnit": "HOURS"
      },
      "userMessage": "",
      "description": ""
    }
  },
  "preDeployment": {
    "deferment": {
      "count": null,
      "interval": null,
      "intervalUnit": "HOURS"
    },
    "userMessage": "",
    "description": ""
  },
  "recurring": false,
  "dayOfMonth": null,
  "recurringLastDayOfMonth": false,
  "recurringDayOfMonth": null,
  "patchTuesdayPlusXDays": null,
  "monthlyRecurringType": null,
  "recurringWeekDayOfMonth": null,
  "recurringWeekDays": "",
  "scheduleType": "On-demand",
  "schemaVersion": "1.0",
  "startDateTime": null,
  "status": "Disabled",
  "opportunisticdownloads": false,
  "minimizeWindow": false,
  "enableReattemptFailedPatches": false,
  "reattemptFailedPatches": {
    "noOfReattempts": 0,
    "exponentialBackoffInterval": 0,
    "exponentialBackoffIntervalUnit": "SECONDS"
  },
  "timeout": -1,
  "timeoutUnit": "HOURS",
  "runOnNextMaintenanceWindow": true,
  "bypassMaintenanceWindow": false,
  "timezone": null,
  "timezoneType": null,
  "type": "Install",
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "exclusionTagIds": [],
  "matchAllTagIds": [],
  "coAuthorUserIds": [],
  "platform": "Windows",
  "exclusionAssetIds": [],
  "preDeployActions": [],
  "postDeployActions": [
    {
      "action": "Run Script",
      "params": {
        "actionItem": "test-actions",
        "carScriptDetails": {
          "carScriptCategory": "",
          "carScriptDescription": "",
          "carScriptId": "",
          "carScriptLanguage": "",
          "carScriptPlatform": "",
          "carScriptQid": "",
          "carScriptSource": "",
          "carScriptStatus": "",
          "carScriptSubType": "",
          "carScriptTitle": "",
          "carScriptType": "",
          "scriptType": "Patch"
        },
        "fileChecksum": "",
        "remediationScope": false,
        "defaultScriptType": ""
      },
      "scriptType": "ps",
      "script": "ZWNobyBoZWxsbw=="
    }
  ],
  "notification": null,
  "remediationQids": [],
  "isVulnContext": false,
  "subCategory": "Patch",
  "chainedJobRule": [],
  "hostIsolationConfig": null,
  "quarantineAssetRequestNotification": null,
  "isDefaultJob": false,
  "defaultJobConfiguration": {
    "onAssetActivation": false,
    "onAssetInactiveForXDays": null
  },
  "allowExecutionWithPendingReboot": false,
  "customPatchURLId": null,
  "downloadRandomizeTime": 0,
  "downloadRandomizeTimeUnit": "MINUTES",
  "jobCategory": null,
  "jobSource": 2
}

API Response

{
  "id": "b68ed442-b431-4cec-a7b2-14c756043b6e",
  "schemaVersion": "1.0",
  "name": "test-windows-ax",
  "immediate": null,
  "type": "Install",
  "status": "Disabled",
  "assetIds": [
    "734c35b7-5b26-4dc7-b56c-08c5a902c345"
  ],
  "assetTagIds": [],
  "matchAllTagIds": [],
  "exclusionTagIds": [],
  "disabledPatches": null,
  "exclusionAssetIds": [],
  "coAuthorUserIds": [],
  "approvedPatches": [
    "36cd9d93-ffc8-333e-a467-b93aec9a1137"
  ],
  "description": "",
  "patchCount": 1,
  "assetCount": null,
  "scheduleType": "On-demand",
  "startDateTime": "2026-9-10 05:46:33 AM",
  "recurring": false,
  "recurringWeekDays": "",
  "dayOfMonth": null,
  "recurringDayOfMonth": null,
  "recurringWeekDayOfMonth": null,
  "timezoneType": "SPECIFIC_TZ",
  "timezone": "UTC",
  "timeout": -1,
  "timeoutUnit": "HOURS",
  "preDeployment": {
    "userMessage": "",
    "deferment": {
      "count": 0,
      "interval": 0,
      "intervalUnit": "HOURS"
    },
    "description": ""
  },
  "duringDeployment": {
    "userMessage": "",
    "description": ""
  },
  "postDeployment": {
    "rebootHonorOnUserLogin": false,
    "rebootOption": {
      "userMessage": "",
      "description": "",
      "deferment": {
        "count": 0,
        "interval": 0,
        "intervalUnit": "HOURS"
      }
    },
    "rebootCountdown": {
      "interval": 15,
      "intervalUnit": "MINUTES",
      "userMessage": "Reboot countdown started",
      "description": "The system reboot is initiated. It will reboot automatically after the timer countdown."
    },
    "onComplete": {
      "userMessage": "",
      "description": "",
      "alwaysShowCompletedPrompt": false
    },
    "suppressreboots": false
  },
  "createdBy": {
    "user": {
      "id": "0b435571-e4d1-6ad6-80be-b2720798867a",
      "name": "quays_an11",
      "fullName": "Ratnakar Chavan"
    },
    "date": "1789019193093",
    "context": null
  },
  "updatedBy": {
    "user": null,
    "date": null,
    "context": null
  },
  "deletedBy": {
    "user": null,
    "date": null,
    "context": null
  },
  "tags": null,
  "matchAllTags": null,
  "patchesList": null,
  "assetsList": null,
  "exclusionAssetList": null,
  "exclusionTags": null,
  "directAssetCount": 0,
  "taggedAssetCount": 0,
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "minimizeWindow": false,
  "startDateTimeEpoch": 0,
  "platform": "Windows",
  "continueOnPatchFailure": false,
  "dynamicPatchesQQL": "",
  "isDynamicPatchesQQL": false,
  "assetDetectionsQQL": "",
  "preDeployActions": null,
  "postDeployActions": [
    {
      "actionId": "6ff1e834-b42e-4f2b-9648-4cc4fdd6ed13",
      "params": {
        "actionItem": "test-actions",
        "downloadURL": null,
        "fileChecksum": "",
        "installMethod": null,
        "installOptions": null,
        "regKey": null,
        "regValueType": null,
        "regValue": null,
        "regKeyAddNew": null,
        "unInstallSoftwareDisplayName": null,
        "unInstallSoftwareVersion": null,
        "unInstallSoftwareVersionMatch": null,
        "unInstallRegistryKey": null,
        "mitigationCategory": null,
        "qid": null,
        "qidDetectionId": null,
        "qidTitle": null,
        "hostVulnId": null,
        "assetName": null,
        "assetPlatform": null,
        "assetOperatingSystem": null,
        "service": null,
        "port": null,
        "protocol": null,
        "fqdn": null,
        "qds": null,
        "ssl": null,
        "assetId": null,
        "assetUUID": null,
        "detectionScoreMin": null,
        "detectionScoreMax": null,
        "carScriptDetails": null,
        "remediationScope": false,
        "carScriptId": null,
        "defaultScriptType": "",
        "isUploadedToCDN": null,
        "encodedId": null,
        "fileName": null,
        "fileSize": null,
        "fileType": null
      },
      "script": "13cc42b0-82d7-74a7-8254-26d7791f9970/6ff1e834-b42e-4f2b-9648-4cc4fdd6ed13/Script",
      "detectionScript": null,
      "scriptType": "ps",
      "detectionScriptType": null,
      "action": "Run Script",
      "mitigationList": null,
      "actionLinkedToJob": false
    }
  ],
  "applicableAssetCount": 1,
  "dynamicQQLType": 1,
  "monthlyRecurringType": null,
  "patchTuesdayPlusXDays": null,
  "recurringLastDayOfMonth": false,
  "jobCategory": 3,
  "jobSource": 2,
  "completionPercent": null,
  "totalAssetCount": null,
  "assetResultReceivedCount": null,
  "notification": null,
  "latestApproval": null,
  "linkedJobId": null,
  "linkedToJob": null,
  "linkedJobs": null,
  "jobStartCountdown": null,
  "passwordAction": null,
  "subCategory": "Patch",
  "additionalDynamicPatchesQQL": null,
  "additionalDynamicQQLType": null,
  "downloadRandomizeTime": 0,
  "downloadRandomizeTimeUnit": "MINUTES",
  "customPatchURLId": null,
  "isVulnContext": false,
  "remediationQids": [],
  "remediationCves": null,
  "etmFilters": null,
  "isAssetImported": false,
  "chainedJobRule": null,
  "quarantineAssetRequestNotification": null,
  "hostIsolationConfig": null,
  "enableReattemptFailedPatches": false,
  "reattemptFailedPatches": {
    "noOfReattempts": 0,
    "exponentialBackoffInterval": 0,
    "exponentialBackoffIntervalUnit": "SECONDS"
  },
  "allowExecutionWithPendingReboot": false,
  "isDefaultJob": false,
  "defaultJobConfiguration": {
    "onAssetActivation": false,
    "onAssetInactiveForXDays": null
  },
  "runOnNextMaintenanceWindow": true,
  "bypassMaintenanceWindow": false,
  "approvalStatus": "PENDING_APPROVAL",
  "opportunisticdownloads": false
}

Updated API: Update Deployment Job (Windows)

New or Updated API Updated
API Endpoint /pm/v2/deploymentjob/update/{deploymentJobId}
Method PATCH
DTD or XSD changes Not Applicable

This updated API now supports the job approval workflow for Windows rollback deployment jobs with the new approvalStatus approval. The approval workflow feature is also supported for the Linux platform.

Sample - Update a Windows Deployment Job with Approval StatusSample - Update a Windows Deployment Job with Approval Status

API Request

curl -X PATCH
"https://<qualys_base_url>/pm/v2/deploymentjob/update/<job_id>"
-H "accept: application/json" 
-H "Authorization: Bearer <JWT_Token>" 
-H "Content-Type: application/json

API Body

{
  "approvalStatus": "REVOKED",
  "approvedPatches": [
    "36cd9d93-ffc8-333e-a467-b93aec9a1137"
  ],
  "dynamicPatchesQQL": "",
  "additionalDynamicPatchesQQL": "",
  "additionalDynamicQQLType": "",
  "isDynamicPatchesQQL": false,
  "dynamicQQLType": 1,
  "linkedJobId": "",
  "assetCount": 1,
  "assetIds": [
    "734c35b7-5b26-4dc7-b56c-08c5a902c345"
  ],
  "isAssetImported": false,
  "assetFilePath": null,
  "assetTagIds": [],
  "assetDetectionsQQL": "",
  "deleted": false,
  "duringDeployment": {
    "userMessage": "",
    "description": ""
  },
  "name": "test-windows-ax",
  "description": "",
  "createdBy": {
    "user": {
      "id": "0b435571-e4d1-6ad6-80be-b2720798867a",
      "name": "johndoe",
      "fullName": "John Doe"
    },
    "date": "1789019193093",
    "context": null
  },
  "patchCount": 1,
  "postDeployment": {
    "suppressreboots": false,
    "onComplete": {
      "userMessage": "",
      "description": "",
      "alwaysShowCompletedPrompt": false
    },
    "rebootCountdown": {
      "interval": 15,
      "intervalUnit": "MINUTES",
      "userMessage": "Reboot countdown started",
      "description": "The system reboot is initiated. It will reboot automatically after the timer countdown."
    },
    "rebootOption": {
      "deferment": {
        "count": null,
        "interval": null,
        "intervalUnit": "HOURS"
      },
      "userMessage": "",
      "description": ""
    }
  },
  "preDeployment": {
    "deferment": {
      "count": null,
      "interval": null,
      "intervalUnit": "HOURS"
    },
    "userMessage": "",
    "description": ""
  },
  "recurring": false,
  "dayOfMonth": null,
  "recurringLastDayOfMonth": false,
  "recurringDayOfMonth": null,
  "patchTuesdayPlusXDays": null,
  "monthlyRecurringType": null,
  "recurringWeekDayOfMonth": null,
  "recurringWeekDays": "",
  "scheduleType": "On-demand",
  "schemaVersion": "1.0",
  "startDateTime": null,
  "status": "Disabled",
  "opportunisticdownloads": false,
  "minimizeWindow": false,
  "enableReattemptFailedPatches": false,
  "reattemptFailedPatches": {
    "noOfReattempts": 0,
    "exponentialBackoffInterval": 0,
    "exponentialBackoffIntervalUnit": "SECONDS"
  },
  "timeout": -1,
  "timeoutUnit": "HOURS",
  "runOnNextMaintenanceWindow": true,
  "bypassMaintenanceWindow": false,
  "timezone": null,
  "timezoneType": null,
  "type": "Install",
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "exclusionTagIds": [],
  "matchAllTagIds": [],
  "coAuthorUserIds": [],
  "platform": "Windows",
  "exclusionAssetIds": [],
  "preDeployActions": [
    {
      "action": "Run Script",
      "params": {
        "actionItem": "test",
        "carScriptDetails": {
          "carScriptCategory": "",
          "carScriptDescription": "",
          "carScriptId": "",
          "carScriptLanguage": "",
          "carScriptPlatform": "",
          "carScriptQid": "",
          "carScriptSource": "",
          "carScriptStatus": "",
          "carScriptSubType": "",
          "carScriptTitle": "",
          "carScriptType": "",
          "scriptType": "Patch"
        },
        "fileChecksum": "",
        "remediationScope": false,
        "defaultScriptType": ""
      },
      "scriptType": "ps",
      "script": "ZWNobyBoZWxsbw=="
    }
  ],
  "postDeployActions": [
    {
      "actionId": "6ff1e834-b42e-4f2b-9648-4cc4fdd6ed13",
      "params": {
        "actionItem": "test-actions",
        "downloadURL": null,
        "fileChecksum": "",
        "installMethod": null,
        "installOptions": null,
        "regKey": null,
        "regValueType": null,
        "regValue": null,
        "regKeyAddNew": null,
        "unInstallSoftwareDisplayName": null,
        "unInstallSoftwareVersion": null,
        "unInstallSoftwareVersionMatch": null,
        "unInstallRegistryKey": null,
        "mitigationCategory": null,
        "qid": null,
        "qidDetectionId": null,
        "qidTitle": null,
        "hostVulnId": null,
        "assetName": null,
        "assetPlatform": null,
        "assetOperatingSystem": null,
        "service": null,
        "port": null,
        "protocol": null,
        "fqdn": null,
        "qds": null,
        "ssl": null,
        "assetId": null,
        "assetUUID": null,
        "detectionScoreMin": null,
        "detectionScoreMax": null,
        "carScriptDetails": null,
        "remediationScope": false,
        "carScriptId": null,
        "defaultScriptType": "",
        "isUploadedToCDN": null,
        "encodedId": null,
        "fileName": null,
        "fileSize": null,
        "fileType": null
      },
      "script": "ZWNobyBoZWxsbw==",
      "detectionScript": null,
      "scriptType": "ps",
      "detectionScriptType": null,
      "action": "Run Script",
      "mitigationList": null,
      "actionLinkedToJob": false
    }
  ],
  "notification": null,
  "remediationQids": [],
  "isVulnContext": false,
  "subCategory": "Patch",
  "chainedJobRule": [],
  "hostIsolationConfig": null,
  "quarantineAssetRequestNotification": null,
  "isDefaultJob": false,
  "defaultJobConfiguration": {
    "onAssetActivation": false,
    "onAssetInactiveForXDays": null
  },
  "allowExecutionWithPendingReboot": false,
  "customPatchURLId": null,
  "downloadRandomizeTime": 0,
  "downloadRandomizeTimeUnit": "MINUTES",
  "jobCategory": 3,
  "jobSource": 2
}

API Response

{
  "id": "b68ed442-b431-4cec-a7b2-14c756043b6e",
  "schemaVersion": "1.0",
  "name": "test-windows-ax",
  "immediate": null,
  "type": "Install",
  "status": "Disabled",
  "assetIds": [
    "734c35b7-5b26-4dc7-b56c-08c5a902c345"
  ],
  "assetTagIds": [],
  "matchAllTagIds": [],
  "exclusionTagIds": [],
  "disabledPatches": null,
  "exclusionAssetIds": [],
  "coAuthorUserIds": [],
  "approvedPatches": [
    "36cd9d93-ffc8-333e-a467-b93aec9a1137"
  ],
  "description": "",
  "patchCount": 1,
  "assetCount": null,
  "scheduleType": "On-demand",
  "startDateTime": null,
  "recurring": false,
  "recurringWeekDays": "",
  "dayOfMonth": null,
  "recurringDayOfMonth": null,
  "recurringWeekDayOfMonth": null,
  "timezoneType": null,
  "timezone": null,
  "timeout": -1,
  "timeoutUnit": "HOURS",
  "preDeployment": {
    "userMessage": "",
    "deferment": {
      "count": 0,
      "interval": 0,
      "intervalUnit": "HOURS"
    },
    "description": ""
  },
  "duringDeployment": {
    "userMessage": "",
    "description": ""
  },
  "postDeployment": {
    "rebootHonorOnUserLogin": false,
    "rebootOption": {
      "userMessage": "",
      "description": "",
      "deferment": {
        "count": 0,
        "interval": 0,
        "intervalUnit": "HOURS"
      }
    },
    "rebootCountdown": {
      "interval": 15,
      "intervalUnit": "MINUTES",
      "userMessage": "Reboot countdown started",
      "description": "The system reboot is initiated. It will reboot automatically after the timer countdown."
    },
    "onComplete": {
      "userMessage": "",
      "description": "",
      "alwaysShowCompletedPrompt": false
    },
    "suppressreboots": false
  },
  "createdBy": {
    "user": {
      "id": "0b435571-e4d1-6ad6-80be-b2720798867a",
      "name": "quays_an11",
      "fullName": "Ratnakar Chavan"
    },
    "date": "1789019193093",
    "context": null
  },
  "updatedBy": {
    "user": {
      "id": "0b435571-e4d1-6ad6-80be-b2720798867a",
      "name": "quays_an11",
      "fullName": null
    },
    "date": "1789020994842",
    "context": null
  },
  "deletedBy": null,
  "tags": null,
  "matchAllTags": null,
  "patchesList": null,
  "assetsList": null,
  "exclusionAssetList": null,
  "exclusionTags": null,
  "directAssetCount": 0,
  "taggedAssetCount": 0,
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "minimizeWindow": false,
  "startDateTimeEpoch": 0,
  "platform": "Windows",
  "continueOnPatchFailure": false,
  "dynamicPatchesQQL": "",
  "isDynamicPatchesQQL": false,
  "assetDetectionsQQL": "",
  "preDeployActions": [
    {
      "actionId": "00c1fbec-44f9-479e-ab6c-c8502f6588b0",
      "params": {
        "actionItem": "test",
        "downloadURL": null,
        "fileChecksum": "",
        "installMethod": null,
        "installOptions": null,
        "regKey": null,
        "regValueType": null,
        "regValue": null,
        "regKeyAddNew": null,
        "unInstallSoftwareDisplayName": null,
        "unInstallSoftwareVersion": null,
        "unInstallSoftwareVersionMatch": null,
        "unInstallRegistryKey": null,
        "mitigationCategory": null,
        "qid": null,
        "qidDetectionId": null,
        "qidTitle": null,
        "hostVulnId": null,
        "assetName": null,
        "assetPlatform": null,
        "assetOperatingSystem": null,
        "service": null,
        "port": null,
        "protocol": null,
        "fqdn": null,
        "qds": null,
        "ssl": null,
        "assetId": null,
        "assetUUID": null,
        "detectionScoreMin": null,
        "detectionScoreMax": null,
        "carScriptDetails": {
          "id": 0,
          "carScriptId": "",
          "carScriptQid": "",
          "carScriptType": "",
          "carScriptPlatform": "",
          "carScriptSource": "",
          "carScriptCategory": "",
          "carScriptSubtype": null,
          "scriptType": "Patch"
        },
        "remediationScope": false,
        "carScriptId": null,
        "defaultScriptType": "",
        "isUploadedToCDN": null,
        "encodedId": null,
        "fileName": null,
        "fileSize": null,
        "fileType": null
      },
      "script": "13cc42b0-82d7-74a7-8254-26d7791f9970/00c1fbec-44f9-479e-ab6c-c8502f6588b0/Script",
      "detectionScript": null,
      "scriptType": "ps",
      "detectionScriptType": null,
      "action": "Run Script",
      "mitigationList": null,
      "actionLinkedToJob": false
    }
  ],
  "postDeployActions": [
    {
      "actionId": "6ff1e834-b42e-4f2b-9648-4cc4fdd6ed13",
      "params": {
        "actionItem": "test-actions",
        "downloadURL": null,
        "fileChecksum": "",
        "installMethod": null,
        "installOptions": null,
        "regKey": null,
        "regValueType": null,
        "regValue": null,
        "regKeyAddNew": null,
        "unInstallSoftwareDisplayName": null,
        "unInstallSoftwareVersion": null,
        "unInstallSoftwareVersionMatch": null,
        "unInstallRegistryKey": null,
        "mitigationCategory": null,
        "qid": null,
        "qidDetectionId": null,
        "qidTitle": null,
        "hostVulnId": null,
        "assetName": null,
        "assetPlatform": null,
        "assetOperatingSystem": null,
        "service": null,
        "port": null,
        "protocol": null,
        "fqdn": null,
        "qds": null,
        "ssl": null,
        "assetId": null,
        "assetUUID": null,
        "detectionScoreMin": null,
        "detectionScoreMax": null,
        "carScriptDetails": null,
        "remediationScope": false,
        "carScriptId": null,
        "defaultScriptType": "",
        "isUploadedToCDN": null,
        "encodedId": null,
        "fileName": null,
        "fileSize": null,
        "fileType": null
      },
      "script": "13cc42b0-82d7-74a7-8254-26d7791f9970/6ff1e834-b42e-4f2b-9648-4cc4fdd6ed13/Script",
      "detectionScript": null,
      "scriptType": "ps",
      "detectionScriptType": null,
      "action": "Run Script",
      "mitigationList": null,
      "actionLinkedToJob": false
    }
  ],
  "applicableAssetCount": 1,
  "dynamicQQLType": 1,
  "monthlyRecurringType": null,
  "patchTuesdayPlusXDays": null,
  "recurringLastDayOfMonth": false,
  "jobCategory": 3,
  "jobSource": 2,
  "completionPercent": null,
  "totalAssetCount": null,
  "assetResultReceivedCount": null,
  "notification": null,
  "latestApproval": null,
  "linkedJobId": null,
  "linkedToJob": null,
  "linkedJobs": null,
  "jobStartCountdown": null,
  "passwordAction": null,
  "subCategory": "Patch",
  "additionalDynamicPatchesQQL": null,
  "additionalDynamicQQLType": null,
  "downloadRandomizeTime": 0,
  "downloadRandomizeTimeUnit": "MINUTES",
  "customPatchURLId": null,
  "isVulnContext": false,
  "remediationQids": [],
  "remediationCves": null,
  "etmFilters": null,
  "isAssetImported": false,
  "chainedJobRule": null,
  "quarantineAssetRequestNotification": null,
  "hostIsolationConfig": null,
  "enableReattemptFailedPatches": false,
  "reattemptFailedPatches": {
    "noOfReattempts": 0,
    "exponentialBackoffInterval": 0,
    "exponentialBackoffIntervalUnit": "SECONDS"
  },
  "allowExecutionWithPendingReboot": false,
  "isDefaultJob": false,
  "defaultJobConfiguration": {
    "onAssetActivation": false,
    "onAssetInactiveForXDays": null
  },
  "runOnNextMaintenanceWindow": true,
  "bypassMaintenanceWindow": false,
  "approvalStatus": "REVOKED",
  "opportunisticdownloads": false
}

Updated API: Create Deployment Rollback Job (Windows)

New or Updated API Updated
API Endpoint /pm/v2/deploymentjob
Method POST
DTD or XSD changes Not Applicable

This updated API now supports the job approval workflow for Windows rollback deployment jobs. A new field approvalStatus is intoduced in the API request. The approval workflow feature is also supported for Linux platform.

Sample - Create a Windows Rollback Deployment Job with Approval StatusSample - Create a Windows Rollback Deployment Job with Approval Status

API Request

curl --location '<qualys_base_url>/pm/v2/deploymentjob' \
--header 'accept: application/json' \
--header 'Authorization: Bearer <JWT_Token>
--header 'Content-Type: application/json' \
--data 

API Body

{
  "approvalStatus": "PENDING_APPROVAL",
  "approvedPatches": [
    "bcc2cee3-736d-3c6f-a4d9-9f3b392d2e56"
  ],
  "dynamicPatchesQQL": "",
  "additionalDynamicPatchesQQL": "",
  "additionalDynamicQQLType": "",
  "isDynamicPatchesQQL": false,
  "dynamicQQLType": 1,
  "linkedJobId": "",
  "assetCount": 1,
  "assetIds": [
    "734c35b7-5b26-4dc7-b56c-08c5a902c345"
  ],
  "isAssetImported": false,
  "assetFilePath": null,
  "assetTagIds": [],
  "assetDetectionsQQL": "",
  "deleted": false,
  "duringDeployment": {
    "userMessage": "",
    "description": ""
  },
  "name": "test-roll-ax",
  "description": "",
  "createdBy": null,
  "patchCount": 1,
  "postDeployment": {
    "suppressreboots": false,
    "rebootHonorOnUserLogin": false,
    "onComplete": {
      "userMessage": "",
      "description": "",
      "alwaysShowCompletedPrompt": false
    },
    "rebootCountdown": {
      "interval": 15,
      "intervalUnit": "MINUTES",
      "userMessage": "Reboot countdown started",
      "description": "The system reboot is initiated. It will reboot automatically after the timer countdown."
    },
    "rebootOption": {
      "deferment": {
        "count": null,
        "interval": null,
        "intervalUnit": "HOURS"
      },
      "userMessage": "",
      "description": ""
    }
  },
  "preDeployment": {
    "deferment": {
      "count": null,
      "interval": null,
      "intervalUnit": "HOURS"
    },
    "userMessage": "",
    "description": ""
  },
  "recurring": false,
  "dayOfMonth": null,
  "recurringLastDayOfMonth": false,
  "recurringDayOfMonth": null,
  "patchTuesdayPlusXDays": null,
  "monthlyRecurringType": null,
  "recurringWeekDayOfMonth": null,
  "recurringWeekDays": "",
  "scheduleType": "On-demand",
  "schemaVersion": "1.0",
  "startDateTime": null,
  "status": "Disabled",
  "opportunisticdownloads": false,
  "minimizeWindow": false,
  "enableReattemptFailedPatches": false,
  "reattemptFailedPatches": {
    "noOfReattempts": 0,
    "exponentialBackoffInterval": 0,
    "exponentialBackoffIntervalUnit": "SECONDS"
  },
  "timeout": -1,
  "timeoutUnit": "HOURS",
  "runOnNextMaintenanceWindow": true,
  "bypassMaintenanceWindow": false,
  "timezone": null,
  "timezoneType": null,
  "type": "Rollback",
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "exclusionTagIds": [],
  "matchAllTagIds": [],
  "coAuthorUserIds": [],
  "platform": "Windows",
  "exclusionAssetIds": [],
  "preDeployActions": [],
  "postDeployActions": [],
  "notification": null,
  "remediationQids": [],
  "isVulnContext": false,
  "subCategory": "Patch",
  "chainedJobRule": [],
  "hostIsolationConfig": null,
  "quarantineAssetRequestNotification": null,
  "isDefaultJob": false,
  "defaultJobConfiguration": {
    "onAssetActivation": false,
    "onAssetInactiveForXDays": null
  },
  "allowExecutionWithPendingReboot": false,
  "customPatchURLId": null,
  "downloadRandomizeTime": 0,
  "downloadRandomizeTimeUnit": "MINUTES",
  "jobCategory": null,
  "jobSource": 2
}

API Response

{
    "id": "65e7624a-91f4-4b4d-bb28-8681a99b6e50",
    "schemaVersion": "1.0",
    "name": "test-roll-ax",
    "immediate": null,
    "type": "Rollback",
    "status": "Disabled",
    "assetIds": [
        "734c35b7-5b26-4dc7-b56c-08c5a902c345"
    ],
    "assetTagIds": [],
    "matchAllTagIds": [],
    "exclusionTagIds": [],
    "disabledPatches": null,
    "exclusionAssetIds": [],
    "coAuthorUserIds": [],
    "approvedPatches": [
        "bcc2cee3-736d-3c6f-a4d9-9f3b392d2e56"
    ],
    "description": "",
    "patchCount": 1,
    "assetCount": null,
    "scheduleType": "On-demand",
    "startDateTime": "2026-9-10 06:30:33 AM",
    "recurring": false,
    "recurringWeekDays": "",
    "dayOfMonth": null,
    "recurringDayOfMonth": null,
    "recurringWeekDayOfMonth": null,
    "timezoneType": "SPECIFIC_TZ",
    "timezone": "UTC",
    "timeout": -1,
    "timeoutUnit": "HOURS",
    "preDeployment": {
        "userMessage": "",
        "deferment": {
            "count": 0,
            "interval": 0,
            "intervalUnit": "HOURS"
        },
        "description": ""
    },
    "duringDeployment": {
        "userMessage": "",
        "description": ""
    },
    "postDeployment": {
        "rebootHonorOnUserLogin": false,
        "rebootOption": {
            "userMessage": "",
            "description": "",
            "deferment": {
                "count": 0,
                "interval": 0,
                "intervalUnit": "HOURS"
            }
        },
        "rebootCountdown": {
            "interval": 15,
            "intervalUnit": "MINUTES",
            "userMessage": "Reboot countdown started",
            "description": "The system reboot is initiated. It will reboot automatically after the timer countdown."
        },
        "onComplete": {
            "userMessage": "",
            "description": "",
            "alwaysShowCompletedPrompt": false
        },
        "suppressreboots": false
    },
    "createdBy": {
        "user": {
            "id": "0b435571-e4d1-6ad6-80be-b2720798867a",
            "name": "quays_an11",
            "fullName": "Ratnakar Chavan"
        },
        "date": "1789021832752",
        "context": null
    },
    "updatedBy": {
        "user": null,
        "date": null,
        "context": null
    },
    "deletedBy": {
        "user": null,
        "date": null,
        "context": null
    },
    "tags": null,
    "matchAllTags": null,
    "patchesList": null,
    "assetsList": null,
    "exclusionAssetList": null,
    "exclusionTags": null,
    "directAssetCount": 0,
    "taggedAssetCount": 0,
    "filterType": "Any",
    "exclusionFilterType": "Any",
    "minimizeWindow": false,
    "startDateTimeEpoch": 0,
    "platform": "Windows",
    "continueOnPatchFailure": false,
    "dynamicPatchesQQL": "",
    "isDynamicPatchesQQL": false,
    "assetDetectionsQQL": "",
    "preDeployActions": null,
    "postDeployActions": null,
    "applicableAssetCount": 1,
    "dynamicQQLType": 1,
    "monthlyRecurringType": null,
    "patchTuesdayPlusXDays": null,
    "recurringLastDayOfMonth": false,
    "jobCategory": 3,
    "jobSource": 2,
    "completionPercent": null,
    "totalAssetCount": null,
    "assetResultReceivedCount": null,
    "notification": null,
    "latestApproval": null,
    "linkedJobId": null,
    "linkedToJob": null,
    "linkedJobs": null,
    "jobStartCountdown": null,
    "passwordAction": null,
    "subCategory": "Patch",
    "additionalDynamicPatchesQQL": null,
    "additionalDynamicQQLType": null,
    "downloadRandomizeTime": 0,
    "downloadRandomizeTimeUnit": "MINUTES",
    "customPatchURLId": null,
    "isVulnContext": false,
    "remediationQids": [],
    "remediationCves": null,
    "etmFilters": null,
    "isAssetImported": false,
    "chainedJobRule": null,
    "quarantineAssetRequestNotification": null,
    "hostIsolationConfig": null,
    "enableReattemptFailedPatches": false,
    "reattemptFailedPatches": {
        "noOfReattempts": 0,
        "exponentialBackoffInterval": 0,
        "exponentialBackoffIntervalUnit": "SECONDS"
    },
    "allowExecutionWithPendingReboot": false,
    "isDefaultJob": false,
    "defaultJobConfiguration": {
        "onAssetActivation": false,
        "onAssetInactiveForXDays": null
    },
    "runOnNextMaintenanceWindow": true,
    "bypassMaintenanceWindow": false,
    "approvalStatus": "PENDING_APPROVAL",
    "opportunisticdownloads": false
}

Updated API: Create Mitigation Job (Windows)

New or Updated API Updated
API Endpoint /mtg/v2/deploymentjob
Method POST
DTD or XSD changes Not Applicable

With this updated API, a new field approvalStatus is introduced in the API request that indicates the job approval status across the job execution flow. When this field is set to Pending_Approval status, the job is shown at the approver's end and will get executed after it is approved.

Input ParametersInput Parameters

Parameter Mandatory/
Optional
Data Type Description
approvalStatus Optional String Specify the job approval status. 
This parameter indicates the approval status in the Job Approval Flow. When the job is created in disabled state with the approval status as “Pending Approval. The job is executed after approval.  

Sample - Create Mitigation Job with Approval Status (Windows)Sample - Create Mitigation Job with Approval Status (Windows)

API Request

curl -X 'POST' \
  '<qualys_base_url>/mtg/v2/deploymentjob' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <JWT_Token>' \
  -H 'Content-Type: application/json' \
  -d'

API Body

{
   "approvalStatus":"PENDING_APPROVAL",
    "qids": [
       90007,90043
    ],
    "assetIds": [
        "28e69c01-8e59-4520-83da-a934becf9d88"
    ],
    "assetTagIds":[
        "576b4fab-2682-433e-b3e6-c4ea9861ae75"
    ],
    "name": "Windows_MTG_OnDemand_Job",
    "description": "Test Windows On-Demand Mitigation Job",
    "scheduleType": "On-demand",
    "schemaVersion": "1.0",
    "status": "Enabled",
    "type": "Install",
    "filterType": "Any",
    "exclusionFilterType": "Any",
    "platform": "Windows",
    "notification": {
        "notificationTypes": {
            "email": true
        },
        "notificationConfigs": {
            "recipientEmails": "[email protected],[email protected]",
            "completedPercentage": 80
        },
        "notificationEvents": {
            "onJobStart": true,
            "onJobComplete": true
        }
    }
}'

API Response

{
  "customerId": "bbb55e58-b06f-fd7b-81b8-92a7c5407282",
  "id": "756aa782-8f11-4468-8e68-d1db74c7203e",
  "schemaVersion": "1.0",
  "name": "Windows_MTG_OnDemand_Job",
  "description": "Test Windows On-Demand Mitigation Job",
  "type": "Install",
  "status": "Enabled",
  "coAuthorUserIds": null,
  "scheduleType": "On-demand",
  "startDateTime": "2026-1-23 04:27:51 AM",
  "recurring": false,
  "timezoneType": "SPECIFIC_TZ",
  "timezone": "UTC",
  "createdBy": {
    "user": {
      "id": "f080cf76-0de1-fd80-826c-ea22cf7da868",
      "name": "<username>",
      "fullName": "John Doe"
    },
    "date": 1769142471331,
    "context": null
  },
  "updatedBy": {
    "user": null,
    "date": null,
    "context": null
  },
  "deletedBy": {
    "user": null,
    "date": null,
    "context": null
  },
  "assetCount": null,
  "taggedAssetCount": 0,
  "applicableAssetCount": 1,
  "totalAssetCount": null,
  "assetResultReceivedCount": null,
  "jobCategory": 3,
  "jobTriggerStatus": null,
  "completionPercent": null,
  "jobSource": 3,
  "readOnly": false,
  "subCategory": "Mitigation",
  "platform": "Windows",
  "assetTagIds": [
    "576b4fab-2682-433e-b3e6-c4ea9861ae75"
  ],
  "assetIds": [
    "28e69c01-8e59-4520-83da-a934becf9d88"
  ],
  "matchAllTagIds": null,
  "exclusionTagIds": null,
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "notification": {
    "notificationTypes": {
      "email": true
    },
    "notificationConfigs": {
      "recipientEmails": "[email protected],[email protected]",
      "completedPercentage": "80"
    },
    "notificationEvents": {
      "onJobStart": true,
      "onJobComplete": true
    }
  },
  "assetDetectionsQQL": "(tags.uuid: [576b4fab-2682-433e-b3e6-c4ea9861ae75]) OR (agentId: [28e69c01-8e59-4520-83da-a934becf9d88]) AND trackingMethod:QAGENT",
  "preDeployActions": [
    {
      "actionId": "1e8b264f-6689-426b-a395-ca288e554781",
      "action": "Apply Mitigation",
      "actionType": "predeploy",
      "params": {
        "timeout": 180,
        "mitigationCategory": "Script-based Virtual Patch",
        "qid": 90007,
        "qidDetectionId": 0,
        "hostVulnId": 0
      },
      "mitigationList": [
        {
          "cves": [
            "90007"
          ],
          "mitigationId": "d7e1f429-e0bd-4aac-83d2-ffabbb25e084",
          "mitigationType": "Registry Update",
          "mitigationSource": null,
          "carScriptId": 263935419,
          "customCdnUrl": "",
          "signatureHashCode": "",
          "impactFactor": 0,
          "implication": 1
        }
      ],
      "actionLinkedToJob": false
    },
    {
      "actionId": "ae7631c7-e0af-441f-81e4-cd88a340ed2e",
      "action": "Apply Mitigation",
      "actionType": "predeploy",
      "params": {
        "timeout": 180,
        "mitigationCategory": "Script-based Virtual Patch",
        "qid": 90043,
        "qidDetectionId": 0,
        "hostVulnId": 0
      },
      "mitigationList": [
        {
          "cves": [
            "90043"
          ],
          "mitigationId": "99138ea7-1f1a-4ec8-a755-927913c3ee11",
          "mitigationType": "Registry Update",
          "mitigationSource": null,
          "carScriptId": 934571954,
          "customCdnUrl": "",
          "signatureHashCode": "",
          "impactFactor": 0,
          "implication": 1
        }
      ],
      "actionLinkedToJob": false
    }
  ],
  "postDeployActions": null,
  "vulnQQL": "vulnerabilities.vulnerability.qid:[90007, 90043]"
  "latestApproval": null,
    "approvalStatus": "PENDING_APPROVAL",
}

Updated API: Update Deployment Rollback Job (Windows)

New or Updated API Updated
API Endpoint /pm/v2/deploymentjob/update/{deploymentJobId}
Method PATCH
DTD or XSD changes Not Applicable

This API now supports the job approval workflow when updating a Windows rollback deployment job. See approvalStatus in the Input Parameters below.

Sample - Update a Windows Rollback Deployment Job with Approval StatusSample - Update a Windows Rollback Deployment Job with Approval Status

API Request

curl -X PATCH
"https://<qualys_base_url>/pm/v2/deploymentjob/update/<job_id>"
-H "accept: application/json" 
-H "Authorization: Bearer <JWT_Token>" 
-H "Content-Type: application/json

API Body

{
  "approvalStatus": "REVOKED",
  "approvedPatches": [
    "bcc2cee3-736d-3c6f-a4d9-9f3b392d2e56",
    "a0bd0873-3355-3186-9734-dd2091072ce4"
  ],
  "dynamicPatchesQQL": "",
  "additionalDynamicPatchesQQL": "",
  "additionalDynamicQQLType": "",
  "isDynamicPatchesQQL": false,
  "dynamicQQLType": 1,
  "linkedJobId": "",
  "assetCount": 1,
  "assetIds": [
    "734c35b7-5b26-4dc7-b56c-08c5a902c345"
  ],
  "isAssetImported": false,
  "assetFilePath": null,
  "assetTagIds": [],
  "assetDetectionsQQL": "",
  "deleted": false,
  "duringDeployment": {
    "userMessage": "",
    "description": ""
  },
  "name": "test-roll-ax",
  "description": "",
  "createdBy": {
    "user": {
      "id": "0b435571-e4d1-6ad6-80be-b2720798867a",
      "name": "quays_an11",
      "fullName": "Ratnakar Chavan"
    },
    "date": "1789021832752",
    "context": null
  },
  "patchCount": 2,
  "postDeployment": {
    "suppressreboots": false,
    "onComplete": {
      "userMessage": "",
      "description": "",
      "alwaysShowCompletedPrompt": false
    },
    "rebootCountdown": {
      "interval": 15,
      "intervalUnit": "MINUTES",
      "userMessage": "Reboot countdown started",
      "description": "The system reboot is initiated. It will reboot automatically after the timer countdown."
    },
    "rebootOption": {
      "deferment": {
        "count": null,
        "interval": null,
        "intervalUnit": "HOURS"
      },
      "userMessage": "",
      "description": ""
    }
  },
  "preDeployment": {
    "deferment": {
      "count": null,
      "interval": null,
      "intervalUnit": "HOURS"
    },
    "userMessage": "",
    "description": ""
  },
  "recurring": false,
  "dayOfMonth": null,
  "recurringLastDayOfMonth": false,
  "recurringDayOfMonth": null,
  "patchTuesdayPlusXDays": null,
  "monthlyRecurringType": null,
  "recurringWeekDayOfMonth": null,
  "recurringWeekDays": "",
  "scheduleType": "On-demand",
  "schemaVersion": "1.0",
  "startDateTime": null,
  "status": "Disabled",
  "opportunisticdownloads": false,
  "minimizeWindow": false,
  "enableReattemptFailedPatches": false,
  "reattemptFailedPatches": {
    "noOfReattempts": 0,
    "exponentialBackoffInterval": 0,
    "exponentialBackoffIntervalUnit": "SECONDS"
  },
  "timeout": -1,
  "timeoutUnit": "HOURS",
  "runOnNextMaintenanceWindow": true,
  "bypassMaintenanceWindow": false,
  "timezone": null,
  "timezoneType": null,
  "type": "Rollback",
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "exclusionTagIds": [],
  "matchAllTagIds": [],
  "coAuthorUserIds": [],
  "platform": "Windows",
  "exclusionAssetIds": [],
  "preDeployActions": [],
  "postDeployActions": [],
  "notification": null,
  "remediationQids": [],
  "isVulnContext": false,
  "subCategory": "Patch",
  "chainedJobRule": [],
  "hostIsolationConfig": null,
  "quarantineAssetRequestNotification": null,
  "isDefaultJob": false,
  "defaultJobConfiguration": {
    "onAssetActivation": false,
    "onAssetInactiveForXDays": null
  },
  "allowExecutionWithPendingReboot": false,
  "customPatchURLId": null,
  "downloadRandomizeTime": 0,
  "downloadRandomizeTimeUnit": "MINUTES",
  "jobCategory": 3,
  "jobSource": 2
}

API Response

{
  "id": "65e7624a-91f4-4b4d-bb28-8681a99b6e50",
  "schemaVersion": "1.0",
  "name": "test-roll-ax",
  "immediate": null,
  "type": "Rollback",
  "status": "Disabled",
  "assetIds": [
    "734c35b7-5b26-4dc7-b56c-08c5a902c345"
  ],
  "assetTagIds": [],
  "matchAllTagIds": [],
  "exclusionTagIds": [],
  "disabledPatches": null,
  "exclusionAssetIds": [],
  "coAuthorUserIds": [],
  "approvedPatches": [
    "bcc2cee3-736d-3c6f-a4d9-9f3b392d2e56",
    "a0bd0873-3355-3186-9734-dd2091072ce4"
  ],
  "description": "",
  "patchCount": 2,
  "assetCount": null,
  "scheduleType": "On-demand",
  "startDateTime": null,
  "recurring": false,
  "recurringWeekDays": "",
  "dayOfMonth": null,
  "recurringDayOfMonth": null,
  "recurringWeekDayOfMonth": null,
  "timezoneType": null,
  "timezone": null,
  "timeout": -1,
  "timeoutUnit": "HOURS",
  "preDeployment": {
    "userMessage": "",
    "deferment": {
      "count": 0,
      "interval": 0,
      "intervalUnit": "HOURS"
    },
    "description": ""
  },
  "duringDeployment": {
    "userMessage": "",
    "description": ""
  },
  "postDeployment": {
    "rebootHonorOnUserLogin": false,
    "rebootOption": {
      "userMessage": "",
      "description": "",
      "deferment": {
        "count": 0,
        "interval": 0,
        "intervalUnit": "HOURS"
      }
    },
    "rebootCountdown": {
      "interval": 15,
      "intervalUnit": "MINUTES",
      "userMessage": "Reboot countdown started",
      "description": "The system reboot is initiated. It will reboot automatically after the timer countdown."
    },
    "onComplete": {
      "userMessage": "",
      "description": "",
      "alwaysShowCompletedPrompt": false
    },
    "suppressreboots": false
  },
  "createdBy": {
    "user": {
      "id": "0b435571-e4d1-6ad6-80be-b2720798867a",
      "name": "quays_an11",
      "fullName": "Ratnakar Chavan"
    },
    "date": "1789021832752",
    "context": null
  },
  "updatedBy": {
    "user": {
      "id": "0b435571-e4d1-6ad6-80be-b2720798867a",
      "name": "quays_an11",
      "fullName": null
    },
    "date": "1789024127301",
    "context": null
  },
  "deletedBy": null,
  "tags": null,
  "matchAllTags": null,
  "patchesList": null,
  "assetsList": null,
  "exclusionAssetList": null,
  "exclusionTags": null,
  "directAssetCount": 0,
  "taggedAssetCount": 0,
  "filterType": "Any",
  "exclusionFilterType": "Any",
  "minimizeWindow": false,
  "startDateTimeEpoch": 0,
  "platform": "Windows",
  "continueOnPatchFailure": false,
  "dynamicPatchesQQL": "",
  "isDynamicPatchesQQL": false,
  "assetDetectionsQQL": "",
  "preDeployActions": [],
  "postDeployActions": [],
  "applicableAssetCount": 1,
  "dynamicQQLType": 1,
  "monthlyRecurringType": null,
  "patchTuesdayPlusXDays": null,
  "recurringLastDayOfMonth": false,
  "jobCategory": 3,
  "jobSource": 2,
  "completionPercent": null,
  "totalAssetCount": null,
  "assetResultReceivedCount": null,
  "notification": null,
  "latestApproval": null,
  "linkedJobId": null,
  "linkedToJob": null,
  "linkedJobs": null,
  "jobStartCountdown": null,
  "passwordAction": null,
  "subCategory": "Patch",
  "additionalDynamicPatchesQQL": null,
  "additionalDynamicQQLType": null,
  "downloadRandomizeTime": 0,
  "downloadRandomizeTimeUnit": "MINUTES",
  "customPatchURLId": null,
  "isVulnContext": false,
  "remediationQids": [],
  "remediationCves": null,
  "etmFilters": null,
  "isAssetImported": false,
  "chainedJobRule": null,
  "quarantineAssetRequestNotification": null,
  "hostIsolationConfig": null,
  "enableReattemptFailedPatches": false,
  "reattemptFailedPatches": {
    "noOfReattempts": 0,
    "exponentialBackoffInterval": 0,
    "exponentialBackoffIntervalUnit": "SECONDS"
  },
  "allowExecutionWithPendingReboot": false,
  "isDefaultJob": false,
  "defaultJobConfiguration": {
    "onAssetActivation": false,
    "onAssetInactiveForXDays": null
  },
  "runOnNextMaintenanceWindow": true,
  "bypassMaintenanceWindow": false,
  "approvalStatus": "REVOKED",
  "opportunisticdownloads": false
}

UI Release Updates

To know more about the UI features, enhancements, and issues addressed, see Patch Management Release 4.2.